#include <bits/stdc++.h>

#define in read()
#define fi first
#define se second
#define pb push_back
#define rep(i, x, y) for(int i = (x); i <= (y); i++) 
#define per(i, x, y) for(int i = (x); i >= (y); i--)

using namespace std;

using ll = long long;
using db = double;
using pii = pair < int , int >;
using vec = vector < int >;
using veg = vector < pii >;

int read() {
	int x = 0; bool f = 0; char ch = getchar(); while(!isdigit(ch)) f |= ch == '-', ch = getchar(); 
	while(isdigit(ch)) x = x * 10 + (ch ^ 48), ch = getchar(); return f ? -x : x;
}

int main() {
	cout << "? " << 200 * 200 << endl;
	rep(i, 1, 200) rep(j, 1, 200) cout << i << " " << j << " "; cout << endl;
	int S; cin >> S;
	int l = 1, r = 7, ans = 256, res = 0;
	while(l <= r) {
		int mid = l + r >> 1, t = 1 << mid;
		cout << "? " << 200 / t * 200 << endl;
		rep(i, t, 200) {
			rep(j, 1, 200) cout << i  << " " << j << " ";
			i += t - 1;
		}
		cout << endl;
		int K; cin >> K;
		if(K * t == S) l = mid + 1;
		else r = mid - 1, ans = t, res = K;
	}
	int x = abs(S / (ans >> 1) - (res << 1)), y = S / x;
	x--; y--;
	cout << "! " << (x + y) * 2 <<  endl;
   	return 0;
}
